/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Current;

import Current.Structures.*;

import java.io.Serializable;

/**
 * @author Fork
 */
public class StructureUpgrades implements Serializable, Cloneable {

    private DefenseFortification defFort;
    private OffenseFortification offFort;
    private SpyOffenseFortification spyOffFort;
    private SpyDefenseFortification spyDefFort;
    private ArmoryFortification armoryFort;
    private Integer goldPerMiner;

    public StructureUpgrades(DefenseFortification defFort, OffenseFortification offFort, SpyOffenseFortification spyOffFort, SpyDefenseFortification spyDefFort, EconomyFortification economy, ArmoryFortification armoryFort, Integer goldPerMiner) {
        this.defFort = defFort;
        this.offFort = offFort;
        this.spyOffFort = spyOffFort;
        this.spyDefFort = spyDefFort;
        this.armoryFort = armoryFort;
        this.goldPerMiner = goldPerMiner;
    }

    public StructureUpgrades() {
        this.defFort = new DefenseFortification();
        this.offFort = new OffenseFortification();
        this.spyOffFort = new SpyOffenseFortification();
        this.spyDefFort = new SpyDefenseFortification();
        this.armoryFort = new ArmoryFortification();
        this.goldPerMiner = 50;
    }

    //making my life easier
    public ArmoryFortification getArmoryFort() {
        return armoryFort;
    }

    public void setArmoryFort(ArmoryFortification armoryFort) {
        this.armoryFort = armoryFort;
    }

    public DefenseFortification getDefFort() {
        return defFort;
    }

    public void setDefFort(DefenseFortification defFort) {
        this.defFort = defFort;
    }

    public OffenseFortification getOffFort() {
        return offFort;
    }

    public void setOffFort(OffenseFortification offFort) {
        this.offFort = offFort;
    }

    public SpyDefenseFortification getSpyDefFort() {
        return spyDefFort;
    }

    public void setSpyDefFort(SpyDefenseFortification spyDefFort) {
        this.spyDefFort = spyDefFort;
    }

    public SpyOffenseFortification getSpyOffFort() {
        return spyOffFort;
    }

    public void setSpyOffFort(SpyOffenseFortification spyOffFort) {
        this.spyOffFort = spyOffFort;
    }

    //Direct Fortification Gold Per Turn Access
    public int getFortGoldPerTurn() {
        return this.defFort.getFortGold();
    }

    public void setFortGoldPerTurn(int goldPerTurn) {
        this.defFort.setFortGold(goldPerTurn);
    }

    //Direct Defense Bonus Access
    public int getDefenseBonus() {
        return this.defFort.getDefenseBonus();
    }

    public void setDefenseBonus(int defenseBonus) {
        this.defFort.setDefenseBonus(defenseBonus);
    }

    //Direct Defense Fort Cost Access
    public int getDefFortCost() {
        return this.defFort.getCostToBuy();
    }

    public void setDefFortCost(int costToBuy) {
        this.defFort.setCostToBuy(costToBuy);
    }

    //Direct Offense Bonus
    public int getOffFortBonus() {
        return this.offFort.getOffenseBonus();
    }

    public void setOffFortBonus(int offenseBonus) {
        this.offFort.setOffenseBonus(offenseBonus);
    }

    //Direct Offense Fort Cost
    public int getOffFortCost() {
        return this.offFort.getCostToBuy();
    }

    public void setOffFortCost(int costToBuy) {
        this.offFort.setCostToBuy(costToBuy);
    }

    //Direct Spy Offense Bonus 
    public int getSpyOffFortBonus() {
        return this.spyOffFort.getSpyOffenseBonus();
    }

    public void setSpyOffFortBonus(int spyOffenseBonus) {
        this.spyOffFort.setSpyOffenseBonus(spyOffenseBonus);
    }

    //Direct Spy Offense Cost
    public int getSpyOffFortCost() {
        return this.spyOffFort.getCostToBuy();
    }

    public void setSpyOffFortCost(int costToBuy) {
        this.spyOffFort.setCostToBuy(costToBuy);
    }

    //Direct Spy Defense Bonus
    public int getSpyDefFortBonus() {
        return this.spyDefFort.getSpyDefenseBonus();
    }

    public void setSpyDefFortBonus(int spyOffenseBonus) {
        this.spyDefFort.setSpyDefenseBonus(spyOffenseBonus);
    }

    //Direct Spy Defense Cost
    public int getSpyDefFortCost() {
        return this.spyDefFort.getCostToBuy();
    }

    public void setSpyDefFortCost(int costToBuy) {
        this.spyDefFort.setCostToBuy(costToBuy);
    }

    public Integer getGoldPerMiner() {
        return goldPerMiner;
    }

    public void setGoldPerMiner(Integer goldPerMiner) {
        this.goldPerMiner = goldPerMiner;
    }


}